//
//  main.swift
//  ObjectMapperDemo
//
//  Created by edy on 2025/8/8.
//

import Foundation
import ObjectMapper

print("Hello, World!")

struct User: Mappable {
    
    // 模型属性
    var userId: Int = 0       // 对应 JSON 的 "user_id"
    // 对应 JSON 的 "name"
    var name: String = ""
    var isActive: Bool = false // 对应 JSON 的 "is_active"
    var registerTime: Date?   // 对应 JSON 的 "register_time"（日期类型）
    
    // 初始化方法（必须实现）
    init?(map: Map) {}
    
    // 映射规则：左侧为模型属性，右侧为 JSON 字段名
    mutating func mapping(map: Map) {
        userId <- map["user_id"]
        name <- map["name"]
        isActive <- map["isActive"]
        // 日期类型需要转换器（默认不支持字符串转 Date）
//        registerTime <- (map["register_time"], DateTransform())
    }
    
}

// 创建模型实例
let user = User(JSON: [
    "user_id": 1003,
    "name": "Charlie",
    "isActive": true,
    "bbbb": "1234"
])!

// 转 JSON 字典
let jsonDict = user.toJSON()
print(jsonDict) // ["user_id": 1003, "name": "Charlie", "is_active": true, ...]

// 转 JSON 字符串
if let jsonString = user.toJSONString() {
    print(jsonString) // 输出：{"user_id":1003,"name":"Charlie","is_active":true}
}

// 格式化输出（带缩进）
if let prettyJson = user.toJSONString(prettyPrint: true) {
    print(prettyJson)
}

